#include<iostream>
#include<signal.h>
#include <sys/types.h>
#include <unistd.h>
#include<unistd.h>
using namespace std;


//异常时信号处理
// void handler(int signo)
// {
//     cout<<"进程错误信号："<<signo<<endl;
//     sleep(1);
// }
// int main()
// {
//     signal(8,handler);
//     int a=10;
//     a/=0;//0不能作为除数
//     cout<<"执行中"<<endl;
//     //不会执行，CPU发现异常会通过操作系统向进程发送信号，而进程也会对信号进行处理，但是进程没有退出，CPU中标记进程执行位置的寄存器并不会往下调度

//     return 0;
// }

int n=0;
void handler(int signo)
{
    n = alarm(0);//参数等于0表示取消之前设置的闹钟，返回值n还是之前闹钟的剩余时间
    //参数大于0表示重设闹钟
    cout<<"alarm result : "<<n<<endl;
    exit(1);
}
int main()
{
    cout<<"mypid = "<<getpid()<<endl;
    signal(14,handler);
    alarm(20);//返回值是闹钟剩余的时间,一般都是0
    while(1)
    {

    }
    return 0;
}